<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>What's New</title>
    <style type="text/css">
        body
        {
            color: #000000;
            font-family: Arial;
            font-size: 75%;
        }
        a
        {
            font-family: Arial;
            text-decoration: none;
        }
        code
        {
            color: #b22222;
            font-family: Courier New;
        }
    </style>
</head>
<body>
    <h3>
        1.3 (${Date})</h3>
    <ul>
        <li><strong>Features</strong>:
            <ul>
                <li>Upgraded to Wix 3.5.</li>
                <li>Added <code>Xml_DeleteNodes</code>.</li>
                <li>Added User Privileges <code>GetAccountSid</code>.</li>
                <li>Added User Privileges <code>TranslateNameFormatted</code>.</li>
            </ul>
        </li>
        <li><strong>Bugs</strong>:
            <ul>
                <li>Bug: <code>ODBCExecuteBinary</code> fails to load the binary record when the binary
                    ID contains a . (dot) or - (dash).</li>
                <li>Bug: ODBC custom actions, extensions and ODBQ miss the last character of the script
                    output when its length equals the internal buffer size.</li>
                <li>Bug: ODBC custom actions, extensions and ODBQ get confused by SQL diag messages that
                    contain brackets.</li>
            </ul>
        </li>
    </ul>
    <h3>
        1.2 (11/09/2010)</h3>
    <ul>
        <li><strong>Features</strong>:
            <ul>
                <li>Added <code>Type</code> option to <code>ODBCExecute</code> and <code>ODBCExecuteFile</code>
                    Wix extensions. Specify <code>SqlServer</code> or <code>Oracle</code> to invoke
                    a database-specific SQL parser.</li>
                <li>Added support for SQL commands (SQL server <code>:On Error</code>, <code>:r</code>,
                    Oracle <code>@@</code>, etc.) to <code>ODBCExecute</code> and <code>ODBCExecuteFile</code>
                    Wix extensions and <code>ODBC_Execute</code> immediate custom action.</li>
                <li>Added <code>BasePath</code> option and support for SQL file inclusions (<code>:r</code>)
                    to <code>ODBCExecute</code> and <code>ODBCExecuteFile</code> Wix extensions.</li>
                <li>Added <code>ODBC_SQL_DELIMITER</code> and <code>ODBC_SQL_TYPE</code> to input parameters
                    of <code>ODBC_Execute</code> immediate custom action.</li>
                <li>Added <code>ODBC_Execute_Binary</code> immediate custom action.</li>
                <li>Added <code>ODBC_SQL_MESSAGES</code> containing out-of-band SQL status messages
                    to output parameters of <code>ODBC_Execute</code> and <code>ODBC_Execute_Binary</code>
                    immediate custom actions.</li>
                <li>Added <code>--flattenonly</code> to <code>ODBQ.exe</code>, process input without
                    executing.</li>
                <li>Added <code>--rawoutput</code> to <code>ODBQ.exe</code>, output results in 'raw'
                    format.</li>
                <li>Added <code>--database</code> to <code>ODBQ.exe</code>, default database name.</li>
                <li>Added short versions of <code>-f (--file)</code> and <code>-o (--outputfile)</code>
                    to <code>ODBQ.exe</code>.</li>
                <li>Added <code>XsltFilename</code> to <code>ODBCExecute</code>, <code>ODBCExecuteFile</code>
                    and <code>ODBCExecuteBinary</code> that specifies an optional XSLT transform for
                    the data.</li>
                <li>Added <code>GenerateRandomString</code> custom action to Cryptography.dll.</li>
                <li>Added <code>Win32_GenerateGuidString</code> and <code>Win32_IsValidGuid</code> custom
                    actions to SystemTools.dll.</li>
                <li>Added <code>Win32_ReadFile</code> and <code>Win32_WriteFile</code> custom actions
                    to SystemTools.dll with UTF-8 support.</li>
                <li>Added <code>Service_Exists</code> custom action to SystemTools.dll.</li>
                <li>Added <code>String_LTrim</code> and <code>String_RTrim</code> to StringTools.dll.</li>
                <li>Added UTF-8 encoded file support for ODBC custom actions, Wix extensions and ODBQ.exe.</li>
                <li>Added UTF-8 encoded file support to <code>SystemTools::TemplateFile</code> Wix extension.</li>
                <li>Added <code>Win32_GetSpecialFolderPath</code> custom action to SystemTols.dll.</li>
                <li><code>DESEDE3_Encrypt</code> and <code>DESEDE3_Decrypt</code> now support binary
                    data.</li>
                <li>Added <code>Base64EncodeA</code>, <code>Base64EncodeW</code>, <code>Base64DecodeA</code>
                    and <code>Base64DecodeW</code> to Cryptography.dll.</li>
                <li>Added support for <code>sqlvariant</code> in ODBC custom actions, Wix extensions
                    and ODBQ.exe.</li>
            </ul>
        </li>
        <li><strong>Breaking Changes</strong>:
            <ul>
                <li><code>DESEDE3_Encrypt</code> and <code>DESEDE3_Decrypt</code> custom actions now
                    return empty results for empty inputs and use PKCS7 padding for encrypted values.
                    Use a previous MSI Extensions 1.1 to decrypt and upgrade existing values.</li>
                <li><code>DESEDE3_Encrypt</code> and <code>DESEDE3_Decrypt</code> custom actions will
                    fail if passed a key larger than 24 bytes. Previous versions silently truncated
                    the key.</li>
                <li>ODBC custom actions, extensions and ODBQ will no longer fail processing empty files.
                    A warning will be produced instead.</li>
            </ul>
        </li>
        <li><strong>Misc</strong>:
            <ul>
                <li>Build and unit tests run on Windows 7, <code>MSIShim</code> adds a dummy <code>Property</code>
                    table with a value for <code>ProductCode</code>.</li>
                <li>Connection strings in custom action data passed between immediate and deferred ODBC
                    custom actions is now encrypted so that credentials are not logged in clear in MSI
                    logs.</li>
            </ul>
        </li>
        <li><strong>Bugs</strong>:
            <ul>
                <li>Bug: <code>XmlTools_XslTransform</code> broken for output of type text.</li>
                <li>Bug: <code>CreateDatabases_SQLServer_Deferred</code> and <code>CreateDatabases_Access_Deferred</code>
                    attempt to make a database connection even if there's nothing to do.</li>
                <li>Bug: error detail lost in custom actions that rely on functions returning Win32
                    DWORD error codes.</li>
                <li>Bug: SystemTools extensions incorrectly impersonate for file copy, move, delete,
                    template processing and registry operations.</li>
                <li>Bug: ODBC custom actions, extensions and ODBQ may fail to execute a statement at
                    <code>SQLDescribeParam</code>.</li>
                <li>Bug: ODBC custom actions, extensions and ODBQ don't work on SQL Server 2000.</li>
                <li>Bug: <code>Win32_DirectoryCreate</code> works inconsistently when paths contain
                    forward slashes depending on whether a path exists or not.</li>
                <li>Bug: ODBC messages are truncated at 208 characters.</li>
                <li>Bug: <code>SelectDbDlg</code> dialog mail fail when <code>DATABASE_SERVER</code>
                    is re-defined with a custom action with "Error 2878: On the dialog SelectDbDlg the
                    control Server has a possible value: [1]. This is an invalid or duplicate value."</li>
            </ul>
        </li>
    </ul>
    <h3>
        1.1 (11/20/2009)</h3>
    <ul>
        <li>First open-source public release.</li>
    </ul>
</body>
</html>
